package net.maku.project.service;

import net.maku.framework.common.utils.PageResult;
import net.maku.framework.mybatis.service.BaseService;
import net.maku.project.entity.ProcessStatesEntity;
import net.maku.project.query.ProcessStatesQuery;
import net.maku.project.vo.ProcessStatesVO;
import net.maku.project.vo.StateSelectVO;
import net.maku.project.vo.StatesCountVO;
import net.maku.project.vo.UpdateStateVO;

import java.util.List;

/**
 * 流程状态表
 *
 * @author 艾力 1106997025@qq.com
 * @since 1.0.0 2024-07-09
 */
public interface ProcessStatesService extends BaseService<ProcessStatesEntity> {

    PageResult<ProcessStatesVO> page(ProcessStatesQuery query);

    void save(ProcessStatesVO vo);

    void changeStates(ProcessStatesVO vo);

    List<ProcessStatesEntity> getInProgressStates();

    void update(ProcessStatesVO vo);

    void delete(List<Long> idList);

    List<ProcessStatesVO> getProcessStageStates(Long projectId, Long projectStageId);


    List<ProcessStatesVO> getProcessStates(Long projectId);

    List<StateSelectVO> getProcessStatesByProjectId(Long projectId);

    void updateProcessStates(UpdateStateVO updateStateVO);

    List<StatesCountVO> getStatesCount();

    float getProgressPercentageByProjectId(Long id);

    boolean getIsOverdueStates(Long id);
}